package com.easy.controller;

import com.easy.bean.User;
import com.easy.dto.LoginDTO;
import com.easy.service.UserService;
import com.easy.util.EmailUtil;
import com.easy.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/api/auth")
public class RegisterController {

    @Autowired
    private EmailUtil emailUtil;

    @Autowired
    private UserService userService;

    private Map<String, String> codeStore = new HashMap<>(); // 用于存储手机号和验证码的映射

    /**
     * 发送验证码接口
     * 这里只是接收手机号，并通过工具类发送验证码到指定的邮箱
     */
    @PostMapping("/send-code")
    public Result sendCode(@RequestBody String phone) {
        try {
            // 假设验证码发送到固定的邮箱地址（例如你在后端设置好的邮箱）
            String email = "2480379037@qq.com";  // 你要发送到的邮箱地址
            String code = emailUtil.generateAndSendCode(email);
            codeStore.put(phone, code); // 存储验证码，手机号作为key
            return Result.success("验证码已发送到邮箱");
        } catch (Exception e) {
            return Result.error("验证码发送失败");
        }
    }

    /**
     * 用户注册接口
     * 这里只是接收手机号和验证码，不做手机号验证
     */
    @PostMapping("/register")
    public Result register(@RequestBody LoginDTO request) {
        String phone = request.getPhone();
        String code = request.getVerifyCode();

        // 此处省略验证码验证，只做注册处理
        // 假设验证码验证通过，执行注册操作
        // 创建 User 实体
        User user = new User();
        user.setUsername(request.getUsername());
        user.setPassword(request.getPassword()); // 密码未加密
        user.setPhone(request.getPhone());
        user.setRole("user");  // 默认角色为普通用户
        user.setCreatedAt(System.currentTimeMillis());  // 当前时间作为注册时间

        // 保存用户到数据库
        User registeredUser = userService.add(user);  // 使用 add 方法进行用户注册
        if (registeredUser != null) {
            return Result.success("注册成功", registeredUser);
        } else {
            return Result.error("注册失败，请稍后再试");
        }
    }

}
